package com.shujia.wyh.day05;

/**
 * 该类是针对于数组的一些常见操作，封装的工具类：比如有冒泡排序，打印数组，求最大值，数组逆序等等
 * @author 小虎
 * @version 1.0
 */
public class ArrayTool {
    private ArrayTool() {
    }

    /**
     * 这是对一维数组进行冒泡排序的方法
     * @param array  需要传入int类型的一维数组
     * @return 返回排序后的数组
     */
    public static int[] BubblingSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) { //外层for循环控制的是轮次
            for (int j = 0; j < array.length - i - 1; j++) { //内层for循环进行相邻的两两比较交换
                if (array[j] > array[j + 1]) {
                    //交换
                    int tmp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = tmp;
                }
            }
        }

        return array;
    }

    /**
     * 该方法是打印数组的功能，可以查看数组中的元素值，最终呈现的格式为：[元素1,元素2,...]
     * @param arr 需要传入一个int类型的一维数组
     */
    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
            if (i == 0) {
                System.out.print("[" + arr[i] + ",");
            } else if (i == arr.length - 1) {
                System.out.println(arr[i] + "]");
            } else {
                System.out.print(arr[i] + ",");
            }
        }
    }

    /**
     * 该方法是获取数组中的最大值
     * @param array 需要传入一个int类型的一维数组
     * @return 返回一维数组中的最大值
     */
    public static int getMaxNumber(int[] array){
        int maxNum = 0;
        for(int i=0;i<array.length;i++){
            if(array[i]>maxNum){
                maxNum = array[i];
            }
        }
        return maxNum;
    }


    /**
     * 该方法是获取数组中的最小值
     * @param array 需要传入一个int类型的一维数组
     * @return 返回一维数组中的最小值
     */
    public static int getMinNumber(int[] array){
        int minNum = 0;
        for(int i=0;i<array.length;i++){
            if(array[i]<minNum){
                minNum = array[i];
            }
        }
        return minNum;
    }

    /**
     * 该方法是将数组逆序
     * 比如：
     *  旧数组：[1,2,3,4,5]
     *  逆序后：[5,4,3,2,1]
     * @param array 需要传入一个int类型数组
     * @return 返回逆序后的数组
     */
    public static int[] niXu2(int[] array) {
        for (int start = 0, end = array.length - 1; start < end; start++, end--) {
            int tmp = array[start];
            array[start] = array[end];
            array[end] = tmp;
        }
        return array;
    }


}
